'\" t
.\"     Title: yabs
.\"    Author: [see the "Author" section]
.\" Generator: DocBook XSL Stylesheets v1.78.1 <http://docbook.sf.net/>
.\"      Date: 02/02/2015
.\"    Manual: Yabs Manual
.\"    Source: Yabs
.\"  Language: English
.\"
.TH "YABS" "1" "02/02/2015" "Yabs" "Yabs Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el       .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
yabs \- Yet another build system
.SH "SYNOPSIS"
.sp
\fByabs\fR [\fIOPTIONS\fR] [\fIFILE\fR]
.SH "DESCRIPTION"
.sp
yabs is a build system that can be used to generate Makefiles
.SH "OPTIONS"
.PP
\fB\-h\fR, \fB\-\-help\fR
.RS 4
Print help
.RE
.PP
\fB\-n\fR, \fB\-\-new\fR
.RS 4
Create a new build file
.RE
.PP
\fB\-V\fR, \fB\-\-verbose\fR[\fIFILE\fR]
.RS 4
Verbosely parse configuration file
.RE
.PP
\fB\-p\fR, \fB\-\-parse=\fR[\fIFILE\fR]
.RS 4
Print configuration file
.RE
.PP
\fB\-e\fR, \fB\-\-extract=\fR[\fIFILE\fR]
.RS 4
Extract distribution tarball
.RE
.PP
\fB\-m\fR, \fB\-\-make=\fR[\fIFILE\fR]
.RS 4
Generate Makefile based on profile
.RE
.SH "CONFIGURATION"
.sp
Configuration files are written in yaml and can have the extensions yaml, yml, or ybf\&. The configuration must be placed in the root directory of the project\&. Valid configuration files must at least start with "\-\-\-", and multi\-doc files must start with "\-\-\-" and end with "\&..."\&. Valid keys are as follows:
.PP
\fBtarget\fR
.RS 4
Name of the binary to be produced\&. If none is set then the name of the current directory is used
.RE
.PP
\fBos\fR
.RS 4
The operating system for the profile\&. If there is a multi\-doc configuration then the name of the operating system will be appended to the generated Makefile
.RE
.PP
\fBremote\fR
.RS 4
Remote system the build will be sent to
.RE
.PP
\fBlang\fR
.RS 4
The language the project is written in
.RE
.PP
\fBarch\fR
.RS 4
The architecture of the system
.RE
.PP
\fBcc\fR
.RS 4
The C compiler to be used
.RE
.PP
\fBcxx\fR
.RS 4
The C++ compiler to be used
.RE
.PP
\fBccflags\fR
.RS 4
C compiler flags
.RE
.PP
\fBcxxflags\fR
.RS 4
C++ compiler flags
.RE
.PP
\fBlflags\fR
.RS 4
Linker flags
.RE
.PP
\fBlibs\fR
.RS 4
Libraries to link to\&. These must not be prepended with "\-l" as they traditionally are in a Makefile
.RE
.PP
\fBincdir\fR
.RS 4
Directories to include\&. Directories must not be prepended with "\-I" as they traditionally are in a Makefile\&.
.RE
.PP
\fBdist\fR
.RS 4
The distrubution tarball to be generated
.RE
.PP
\fBbefore\-script\fR
.RS 4
List of scripts that will be executed before anything is done with the profile
.RE
.PP
\fBafter\-script\fR
.RS 4
List of scripts that will be executed after the profile is read
.RE
.SH "EXAMPLE"
.sp
.if n \{\
.RS 4
.\}
.nf
An exmple for a single document project would be:
\-\-\-
os: linux
target: yabs
cc: gcc
cxx: g++
incdir: include
\&.\&.\&.
The resulting Makefile generated by this configuration would be a single file
named "Makefile" as there is only one profile\&.

An exmple for multi\-document project would be:
\-\-\-
os: linux
target: yabs
cc: gcc
cxx: g++
incdir: include
\&.\&.\&.
\-\-\-
os: freebsd
target: yabs
cc: clang
cxx: clang++
\&.\&.\&.
The resulting Makefile generated by this configuration would be two files named
"Makefile\-linux" and "Makefile\-freebsd" as there are two profiles\&.
.fi
.if n \{\
.RE
.\}
.SH "REPORTING BUGS"
.sp
Report bugs to the yabs mailing list \fByabs@librelist\&.org\fR\&. Pull requests may also be made at \fBhttps://github\&.com/0X1A/yabs\fR
.SH "AUTHOR"
.sp
Alberto Corona <alberto@0x1a\&.us>
